home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / taropyon / install / insttaro.c < prev    next >
Text File  |  1994-11-16  |  32KB  |  1,125 lines

  1. /*************************************************************************
  2. *    [TaroPYON SoftWare collection]インストール処理
  3. *************************************************************************/
  4.  
  5. #define    _NO_HEWIN    (0)
  6. #define    _NO_EDIA    (1)
  7. #define    _NO_GSPLAY    (2)
  8. #define    _NO_HE386    (3)
  9. #define    _NO_CCI        (4)
  10. #define    _NO_DOSTOOL    (5)
  11. #define    _NO_TOSTOOL    (6)
  12. #define    _NUM_TAROSC    (7)
  13.  
  14. char    *_tarosc_aplname[_NUM_TAROSC] =
  15. {
  16.     "HEwin"    ,
  17.     "EDIA"     ,
  18.     "GSPLAY"   ,
  19.     "HE386"    ,
  20.     "CCI"      ,
  21.     "DOS tools",
  22.     "TownsOS tools"
  23. };
  24.  
  25. char    _tarosc_skey[_NUM_TAROSC] =    /* ショートカットキー    */
  26. {    'H',
  27.     'E',
  28.     'G',
  29.     'M',
  30.     'C',
  31.     'D',
  32.     'T'
  33. };
  34.  
  35. char    _tarosc_instdir[_NUM_TAROSC][128];
  36. char    _tarosc_defdir[128];
  37. int        _tarosc_fcopy_att;
  38.  
  39. int        _hewin_swapDrv, _hewin_init;
  40. int        _edia_swapDrv;
  41. int        _gsplay_midi;
  42. int        _gsplay_rsmidi;
  43. int        _gsplay_internal;
  44.  
  45. int        _tarosc_setinstdir(char *instdir);
  46. int        _tarosc_setapldir();
  47. int        _tarosc_set_fcopymode();
  48. int        _tarosc_check_config(int item_setup);
  49. int        _hewin_config(char *instdir, int item_setup);
  50. int        _hewin_install(char *instdir,int item_setup);
  51. int        _hewin_setup(char *instdir,int item_setup);
  52. int        _edia_config(char *instdir, int item_setup);
  53. int        _edia_install(char *instdir,int item_setup);
  54. int        _edia_setup(char *instdir,int item_setup);
  55. int        _hewin_edia_setup(char *fn_mac, char *instdir,int item_setup);
  56. int        _chk_pathlist( char *pathlist, char *path );
  57. int        _gsplay_config(char *instdir, int item_setup);
  58. int        _gsplay_install(char *instdir,int item_setup);
  59. int        _gsplay_setup(char *instdir,int item_setup);
  60. int        _he386_install(char *instdir,int item_setup);
  61. int        _cci_install(char *instdir,int item_setup);
  62. int        _dostool_install(char *instdir,int item_setup);
  63. int        _tostool_install(char *instdir,int item_setup);
  64.  
  65. char    *get_inst_taro_mnu()
  66. {
  67.     char    *mnu;
  68.  
  69.     if ( (mnu = MNU_open()) == NULL )
  70.         return (NULL);
  71.     MNU_datAdd( mnu, 0, 'H', Rom16x16, 0, "tarosc_install" , 0, "TaroPYON SoftWare Collection");
  72.     MNU_datAdd( mnu, 0, 'S', Rom16x16, 0, "tarosdk_install", 0, "サイドワークプログラム集"  );
  73.     MNU_datAdd( mnu, 0,  0 , Rom16x16, 0, ""               , 0, NULL );
  74.     MNU_datAdd( mnu, 0, '1', Rom16x16, 0, "splib_install"  , 0, "ライブラリ&ソース 1 (SPLIB)"  );
  75.     MNU_datAdd( mnu, 0, '2', Rom16x16, 0, "silib_install"  , 0, "ライブラリ&ソース 2 (SILIB)"  );
  76.     MNU_datAdd( mnu, 0, '3', Rom16x16, 0, "dtalib_install" , 0, "ライブラリ&ソース 3 (DTALIB)" );
  77. #ifndef    _FC9
  78.     MNU_datAdd( mnu, 0, '4', Rom16x16, 0, "lhadll_install" , 0, "ライブラリ&ソース 4 (LHA.DLL)");
  79. #endif
  80.     MNU_setPosition(mnu,-1);
  81.  
  82.     return (mnu);
  83. }
  84.  
  85. int        tarosc_install()
  86. {
  87.     int            ret, i, att, len, drv, argc, item_setup;
  88.     char       *fp;
  89.     char      **argv, *p, *typename;
  90.     char        *instdir;
  91.     char       *softname;
  92.     char        srcdir[128], instfile[128];
  93.     char        helpfn[128];
  94.     char        item_ttl[80],item_prog[16], item_para[128];
  95.     int            item_att;
  96.     char       *dlgTxm;
  97.     char        tmp[256], tmp2[256];
  98.  
  99.     instdir = _tarosc_defdir;    instdir[0] = '\0';
  100.     softname = "TaroPYON SoftWare collection";
  101.     _tarosc_fcopy_att = FCOPY_ATT_SUBDIR | FCOPY_ATT_TIMESTAMP | FCOPY_ATT_CHK_OVERWRITE | FCOPY_ATT_NOENDMSG;
  102.  
  103. _TOP:
  104.     syl_putf(softname);
  105.     dlgTxm = DlgTxm_open(ColBoxNormal);
  106.     DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
  107.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  108.         "%s をインストールします。", softname );
  109.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r'  , KA_EXEC  ,
  110.         1, "", 0, "インストール : [実行]");
  111.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'H'   , KA_H     ,
  112.         2, "inst_help", "/TAROPYON/tarocol.doc", "説明 : [H]");
  113.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\x1B', KA_CANCEL,
  114.         3, "", 0, "取消 : [取消]");
  115.     DlgTxm_setSize(dlgTxm,320,40);
  116.     DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
  117.     do
  118.     {
  119.         ret = DlgTxm_start(dlgTxm);
  120.     } while ( ret == 2 );
  121.     DlgTxm_close(dlgTxm);
  122.     if ( ret != 1 )
  123.         goto _RET;
  124.  
  125.     /* インストール先指定    --------------------------------------------*/
  126. _SETDIR:
  127.     if ( _tarosc_setinstdir(instdir) )
  128.         goto _TOP;
  129.     if ( _tarosc_setapldir() < 0 )
  130.         goto _TOP;
  131.  
  132.     dlgTxm = DlgTxm_open(ColBoxNormal);
  133.     DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
  134.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  135.         "以下のディレクトリにインストールします。" );
  136.     DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER,"");
  137.     ret = 0;
  138.     for ( i = 0; i < _NUM_TAROSC; ++i )
  139.     {
  140.         if ( _tarosc_instdir[i][0] )
  141.         {
  142.             ret = 1;
  143.             DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_LEFT,
  144.                 "  %-14s [%s]", _tarosc_aplname[i], _tarosc_instdir[i] );
  145.         }
  146.     }
  147.     DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER,"");
  148.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  149.         "インストール1 … ファイルを複写してTownsMENU にアイテム登録");
  150.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  151.         "インストール2 … ファイルを複写(アイテム登録はしない)    ");
  152.  
  153.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r'  , KA_EXEC  , 1, "", 0, "インストール1 : [実行]");
  154.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'C'   , KA_C     , 2, "", 0, "インストール2 : [C]");
  155.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\x1B', KA_CANCEL, 3, "", 0, "取消 : [取消]");
  156.     DlgTxm_setSize(dlgTxm,320,40);
  157.     DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
  158.     ret = DlgTxm_start(dlgTxm);
  159.     DlgTxm_close(dlgTxm);
  160.     if ( ret != 1 && ret != 2 )
  161.         goto _TOP;
  162.     item_setup = (ret == 1 ? 1 : 0);
  163.  
  164.     /* カスタマイズ            ------------------------------------------------*/
  165.     _tarosc_set_fcopymode();
  166.     if ( _tarosc_instdir[_NO_HEWIN  ][0] )    _hewin_config(  _tarosc_instdir[_NO_HEWIN  ], item_setup);
  167.     if ( _tarosc_instdir[_NO_EDIA   ][0] )    _edia_config(   _tarosc_instdir[_NO_EDIA   ], item_setup);
  168.     if ( _tarosc_instdir[_NO_GSPLAY ][0] )    _gsplay_config( _tarosc_instdir[_NO_GSPLAY ], item_setup);
  169.  
  170.     /* 設定確認        --------------------------------------------------------*/
  171.     ret = _tarosc_check_config(item_setup);
  172.     if ( ret < 0 )
  173.         goto _TOP;
  174.     if ( ret == 0 )
  175.         goto _SETDIR;
  176.  
  177.     /* インストール開始        ------------------------------------------------*/
  178.     if ( _tarosc_instdir[_NO_HEWIN  ][0] )    _hewin_install(  _tarosc_instdir[_NO_HEWIN  ], item_setup);
  179.     if ( _tarosc_instdir[_NO_EDIA   ][0] )    _edia_install(   _tarosc_instdir[_NO_EDIA   ], item_setup);
  180.     if ( _tarosc_instdir[_NO_GSPLAY ][0] )    _gsplay_install( _tarosc_instdir[_NO_GSPLAY ], item_setup);
  181.     if ( _tarosc_instdir[_NO_HE386  ][0] )    _he386_install(  _tarosc_instdir[_NO_HE386  ], item_setup);
  182.     if ( _tarosc_instdir[_NO_CCI    ][0] )    _cci_install(    _tarosc_instdir[_NO_CCI    ], item_setup);
  183.     if ( _tarosc_instdir[_NO_DOSTOOL][0] )    _dostool_install(_tarosc_instdir[_NO_DOSTOOL], item_setup);
  184.     if ( _tarosc_instdir[_NO_TOSTOOL][0] )    _tostool_install(_tarosc_instdir[_NO_TOSTOOL], item_setup);
  185.     install_end( softname, 0 );
  186.  
  187. _RET:
  188.     syl_clear();
  189.  
  190.     return (NORMAL);
  191. }
  192.  
  193. int        _tarosc_setinstdir(char *instdir)
  194. {
  195.     char    tmp[256];
  196.  
  197.     if ( APL_setInstallDir(instdir,"インストール先指定") )
  198.         return (ERR);
  199.  
  200.     strcpy(tmp,instdir);
  201.     add_path_fn(tmp,"");    /* パス名の最後を'/' に    */
  202.  
  203.     sprintf( _tarosc_instdir[_NO_HEWIN    ], "%s%s", tmp, "HEWIN"  );
  204.     sprintf( _tarosc_instdir[_NO_EDIA     ], "%s%s", tmp, "EDIA"   );
  205.     sprintf( _tarosc_instdir[_NO_GSPLAY   ], "%s%s", tmp, "GSPLAY" );
  206.     sprintf( _tarosc_instdir[_NO_HE386    ], "%s%s", tmp, "HE386"  );
  207.     sprintf( _tarosc_instdir[_NO_CCI      ], "%s%s", tmp, "CCI"    );
  208.     sprintf( _tarosc_instdir[_NO_DOSTOOL  ], "%s%s", tmp, "DOSTOOL");
  209.     sprintf( _tarosc_instdir[_NO_TOSTOOL  ], "%s%s", tmp, "TOSTOOL");
  210.  
  211.     return (NORMAL);
  212. }
  213.  
  214. int        _tarosc_setapldir()
  215. {
  216.     char    *mnu, *mnuapl[_NUM_TAROSC];
  217.     char    *dir;
  218.     int        i, flag, ret;
  219.  
  220.     /* サブメニュー設定    */
  221.     for ( i = 0; i < _NUM_TAROSC; ++i )
  222.     {
  223.         if ( (mnuapl[i] = MNU_open()) != NULL )
  224.         {
  225.             MNU_datAdd( mnuapl[i], 0, '1', Rom16x16, i, "_setdir_tarosc"   , NULL, "Set directory");
  226.             MNU_datAdd( mnuapl[i], 0, '0', Rom16x16, i, "_noinstall_tarosc", NULL, "No install"   );
  227.             MNU_setPosition(mnuapl[i],-1);
  228.         }
  229.     }
  230.  
  231.     do
  232.     {
  233.         if ( (mnu = MNU_open()) == NULL )
  234.             return (ERR);
  235.  
  236.         for ( i = 0; i < _NUM_TAROSC; ++i )
  237.         {
  238.             dir = _tarosc_instdir[i];
  239.             if ( *dir == '\0' )
  240.                 dir = "No install";
  241.             MNU_mnuAdd( mnu, 0, _tarosc_skey[i], Fnt16x16, mnuapl[i],
  242.                 "%-14s [%s]", _tarosc_aplname[i], dir);
  243.         }
  244.         MNU_datAdd( mnu, 0,  0 , NULL    , 0, "", 0, NULL );
  245.         MNU_datAdd( mnu, 0, 'S', Rom16x16, 1, "", 0, " <<< 設定終了 >>>");
  246.         MNU_setPosition(mnu,DLGPOS_CENTER_OF_SCREEN);
  247.         ret = MNU_start(mnu);
  248.         MNU_close(mnu);
  249.         MNU_datClear(mnu);
  250.     } while ( ret == 0 );
  251.  
  252.     flag = 0;
  253.     for ( i = 0; i < _NUM_TAROSC; ++i )
  254.     {
  255.         if ( _tarosc_instdir[i][0] )
  256.             flag = 1;
  257.         MNU_datClear( mnuapl[i] );
  258.     }
  259.     if ( flag == 0 )
  260.         ret = -1;
  261.  
  262.     return (ret);
  263. }
  264.  
  265. int        _setdir_tarosc(int evNo, char *evdat)
  266. {
  267.     char    *aplname;
  268.     char    *instdir;
  269.  
  270.     instdir = _tarosc_instdir[evNo];
  271.     if ( *instdir == '\0' )
  272.         strcpy(instdir,_tarosc_defdir);
  273.     APL_setInstallDir(instdir,"%s インストール先指定", _tarosc_aplname[evNo]);
  274.     return (0);
  275. }
  276.  
  277. int        _noinstall_tarosc(int evNo, char *evdat)
  278. {
  279.     _tarosc_instdir[evNo][0] = '\0';
  280.     return (0);
  281. }
  282.  
  283. /*************************************************************************
  284. *    ファイル複写モード
  285. *************************************************************************/
  286.  
  287. int        _tarosc_set_fcopymode()
  288. {
  289.     int            ret;
  290.     char       *dlgTxm;
  291.  
  292.     dlgTxm = DlgTxm_open(ColBoxNormal);
  293.     DlgTxm_setTitle(dlgTxm,Fnt16x16,"ファイル複写動作の設定");
  294.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  295.         "インストール時のファイル複写動作を指定してください。");
  296.     DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER, "");
  297.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  298.         "ノーマル … 通常の複写                                    ");
  299.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  300.         "日付比較 … タイムスタンプを比較して新しいファイルのみ複写");
  301.  
  302.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 160, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r'  , KA_EXEC  ,
  303.         0, "", 0, "ノーマル : [実行]");
  304.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 160, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'T'   , KA_T     ,
  305.         1, "", 0, "日付比較 : [T]");
  306.     DlgTxm_setSize(dlgTxm,480,40);
  307.     DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
  308.     do
  309.     {
  310.         ret = DlgTxm_start(dlgTxm);
  311.     } while ( ret < 0 );
  312.  
  313.     DlgTxm_close(dlgTxm);
  314.  
  315.     _tarosc_fcopy_att = FCOPY_ATT_SUBDIR | FCOPY_ATT_TIMESTAMP | FCOPY_ATT_CHK_OVERWRITE | FCOPY_ATT_NOENDMSG;
  316.     if ( ret )
  317.         _tarosc_fcopy_att |= FCOPY_ATT_CHK_TIMESTAMP;
  318.  
  319.     return (NORMAL);
  320. }
  321.  
  322.  
  323. /*************************************************************************
  324. *    設定確認
  325. *************************************************************************/
  326.  
  327. int        _tarosc_check_config(int item_setup)
  328. {
  329.     int            ret, i;
  330.     char       *dlgTxm;
  331.     char        tmp[256], *msg;
  332.  
  333.     dlgTxm = DlgTxm_open(ColBoxNormal);
  334.     DlgTxm_setTitle(dlgTxm,Fnt16x16,"設定の確認");
  335.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
  336.         "  実行ファイルのアイテム登録  … [%s]",
  337.         item_setup ? "行う" : "行わない" );
  338.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
  339.         "  ファイル複写動作モード      … [%s]",
  340.         (_tarosc_fcopy_att & FCOPY_ATT_CHK_TIMESTAMP) ? "日付比較" : "ノーマル" );
  341.  
  342.     if (  _tarosc_instdir[_NO_HEWIN][0] )
  343.     {
  344.         DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
  345.             "  HEwin 初期設定              … [%s]",
  346.             _hewin_init ? "する" : "しない");
  347.  
  348.         if ( item_setup )
  349.         {
  350.             if ( _hewin_swapDrv < 0 )
  351.                 msg = "指定なし";
  352.             else
  353.             {
  354.                 msg = tmp;
  355.                 sprintf(msg,"%c:", _hewin_swapDrv);
  356.             }
  357.             DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
  358.                 "  HEwin 作業ドライブ          … [%s]", msg);
  359.         }
  360.     }
  361.     if ( _tarosc_instdir[_NO_EDIA][0] )
  362.     {
  363.         if ( item_setup )
  364.         {
  365.             if ( _edia_swapDrv < 0 )
  366.                 msg = "指定なし";
  367.             else
  368.             {
  369.                 msg = tmp;
  370.                 sprintf(msg,"%c:", _hewin_swapDrv);
  371.             }
  372.             DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
  373.                 "  EDIA 作業ドライブ           … [%s]", msg);
  374.         }
  375.     }
  376.     if ( _tarosc_instdir[_NO_GSPLAY][0] )
  377.     {
  378.         if ( item_setup && (_gsplay_midi >= 0 || _gsplay_rsmidi || _gsplay_internal >=0) )
  379.         {
  380.             if ( _gsplay_midi < 0 )
  381.             {
  382.                 msg = "未使用";
  383.             } else
  384.             {
  385.                 msg = tmp;
  386.                 sprintf(msg,"port %c", _gsplay_midi + 'A' );
  387.             }
  388.             DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
  389.                     "  GSPLAY 演奏データ出力先     … [MIDI card (%s)]", msg);
  390.  
  391.             if ( _gsplay_rsmidi >= 0 )
  392.                 DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
  393.                     "                              … [RS-232C MIDI]");
  394.             if ( _gsplay_internal >= 0 )
  395.                 DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
  396.                     "                              … [内蔵音源]");
  397.         }
  398.     }
  399.  
  400.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r'  , KA_EXEC  ,
  401.         1, "", 0, "インストール : [実行]");
  402.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'R'   , KA_R     ,
  403.         2, "", 0, "再設定 : [R]");
  404.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\x1B', KA_CANCEL,
  405.         3, "", 0, "取消 : [取消]");
  406.     DlgTxm_setSize(dlgTxm,480,40);
  407.     DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
  408.     ret = DlgTxm_start(dlgTxm);
  409.     DlgTxm_close(dlgTxm);
  410.  
  411.     switch ( ret )
  412.     {
  413.         case 1:
  414.             return (1);
  415.         case 2:
  416.             return (0);        /* 再設定    */
  417.         default:
  418.             return (-1);    /* 取消    */
  419.     }
  420. }
  421.  
  422. /*************************************************************************
  423. *    HEwin
  424. *************************************************************************/
  425.  
  426. int        _hewin_config(char *instdir, int item_setup)
  427. {
  428.     int            ret;
  429.     char       *dlgTxm;
  430.     char       *dlgGets;
  431.     char        buf[8];
  432.  
  433.     _hewin_init = 0;
  434.  
  435.     dlgTxm = DlgTxm_open(ColBoxNormal);
  436.     DlgTxm_setTitle(dlgTxm,Fnt16x16,"HEwin 環境設定");
  437.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  438.         "インストール時にHEwin の初期設定を行いますか?");
  439.     DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER, "");
  440.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  441.         "新規にHEwin をインストールするときは[初期設定]を指定してください。");
  442.  
  443.     DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER,"");
  444.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  445.         "※  初期設定を指定すると、既にインストールされている");
  446.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  447.         "    HEwin の設定情報は失われます。                  ");
  448.  
  449.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'I'  , KA_I  ,
  450.         1, "", 0, "初期設定 : [I]");
  451.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'N'  , KA_N  ,
  452.         0, "", 0, "なし : [N]");
  453.  
  454.     DlgTxm_setSize(dlgTxm,320,40);
  455.     DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
  456.     do
  457.     {
  458.         ret = DlgTxm_start(dlgTxm);
  459.     } while ( ret < 0 );
  460.     DlgTxm_close(dlgTxm);
  461.     _hewin_init = ret;
  462.  
  463.     _hewin_swapDrv = -1;
  464.     if ( item_setup )
  465.     {
  466.         if ( (dlgGets = DlgGets_open()) == NULL )
  467.             return (ERR);
  468.  
  469.         DlgGets_setTitle(dlgGets,Fnt16x16,"HEwin 環境設定");
  470.         buf[0] = '\0';
  471.         DlgGets_setSize(dlgGets,320,64);
  472.         DlgGets_putf( dlgGets, Fnt16x16, 1, "作業ドライブを指定してください(例:「D」)。" );
  473.         DlgGets_setPosition(dlgGets,DLGPOS_CENTER_OF_SCREEN);    /* 画面中央    */
  474.         if ( DlgGets_start(dlgGets,3,buf) == NORMAL )
  475.         {
  476.             if ( isalpha(buf[0]) )
  477.                 _hewin_swapDrv = toupper(buf[0]);
  478.             else
  479.                 _hewin_swapDrv = -1;
  480.         }
  481.         DlgGets_close(dlgGets);
  482.     }
  483.     return (NORMAL);
  484. }
  485.  
  486. int        _hewin_install(char *instdir,int item_setup)
  487. {
  488.     int            ret, att, len, drv;
  489.     char       *srcdir, *instfile;
  490.     char       *item_prog, *item_ttl, item_para[128];
  491.     int            item_att;
  492.     char        tmp[256], tmp2[256];
  493.  
  494.     srcdir    = "/TAROPYON/HEWIN";
  495.     instfile  = "*.exp *.cci *.c *.h *.rex *.dll *.exe *.doc *.hlp *.lst *.tbl";
  496.     item_prog = "HEWIN.EXP";
  497.     item_ttl  = "HEwin";
  498.     item_para[0] = '\0';
  499.     item_att  = 2;
  500.  
  501.     syl_putf("HEWIN INSTALL");
  502.     FS_chdrv( toupper(DirStart[0]) - 'A' );
  503.     if ( *srcdir == '\0' || *srcdir == '.' )
  504.     {
  505.         strcpy(tmp,DirStart);
  506.         ret = strlen(tmp);
  507.         if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  508.             tmp[ret-1] = '\0';
  509.     } else
  510.     {
  511.         if ( FS_isDelim(*srcdir) )
  512.             strcpy(tmp,srcdir);
  513.         else
  514.             sprintf(tmp,"%s%s",DirStart, srcdir);
  515.     }
  516.     FS_getFullPn(tmp2,tmp);
  517.     srcdir = tmp2;
  518.     att = _tarosc_fcopy_att;
  519.     ret = FCOPY_exec(att, srcdir, instfile, instdir);
  520.  
  521.     if ( _hewin_init )
  522.     {
  523.         instfile = "*.apl *.env *.ini *.itm *.tif";
  524.         att = _tarosc_fcopy_att & (~FCOPY_ATT_SUBDIR);
  525.         ret = FCOPY_exec(att, srcdir, instfile, instdir);
  526.     }
  527.  
  528.     /* 環境設定    --------------------------------------------------------*/
  529.     syl_putf("HEWIN CUSTOMIZE");
  530.     _hewin_setup(instdir,item_setup);
  531.  
  532.     if ( ret == NORMAL && item_setup != 0 )
  533.     {    /* アイテム登録    */
  534.         syl_putf("HEWIN ITEM SETUP");
  535.         if ( isalpha(_hewin_swapDrv) )
  536.             sprintf(item_para,"-swapDrv %c", _hewin_swapDrv);
  537.         drv = toupper(instdir[0]) - 'A';
  538.         strcpy(tmp,instdir);
  539.         add_path_fn(tmp,item_prog);
  540.         item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
  541.     }
  542.  
  543.     return (ret);
  544. }
  545.  
  546. int        _hewin_setup(char *instdir,int item_setup)
  547. {
  548.     return _hewin_edia_setup("hewin.mac", instdir, item_setup);
  549. }
  550.  
  551. /*************************************************************************
  552. *    EDIA
  553. *************************************************************************/
  554.  
  555. int        _edia_config(char *instdir, int item_setup)
  556. {
  557.     int            ret;
  558.     char       *dlgGets;
  559.     char        buf[8];
  560.  
  561.     _edia_swapDrv = -1;
  562.     if ( item_setup )
  563.     {
  564.         if ( (dlgGets = DlgGets_open()) == NULL )
  565.             return (ERR);
  566.  
  567.         DlgGets_setTitle(dlgGets,Fnt16x16,"EDIA 環境設定");
  568.         buf[0] = '\0';
  569.         DlgGets_setSize(dlgGets,320,64);
  570.         DlgGets_putf( dlgGets, Fnt16x16, 1, "作業ドライブを指定してください(例:「D」)。" );
  571.         DlgGets_setPosition(dlgGets,DLGPOS_CENTER_OF_SCREEN);    /* 画面中央    */
  572.         if ( DlgGets_start(dlgGets,3,buf) == NORMAL )
  573.         {
  574.             if ( isalpha(buf[0]) )
  575.                 _edia_swapDrv = toupper(buf[0]);
  576.             else
  577.                 _edia_swapDrv = -1;
  578.         }
  579.         DlgGets_close(dlgGets);
  580.     }
  581.     return (NORMAL);
  582. }
  583.  
  584. int        _edia_install(char *instdir,int item_setup)
  585. {
  586.     int            ret, att, len, drv;
  587.     char       *srcdir, *instfile;
  588.     char       *item_prog, *item_ttl, item_para[128];
  589.     int            item_att;
  590.     char        tmp[256], tmp2[256];
  591.  
  592.     srcdir    = "/TAROPYON/EDIA";
  593.     instfile  = "*.exp *.cci *.c *.h *.rex *.dll *.doc";
  594.     item_prog = "EDIA.EXP";
  595.     item_ttl  = "EDIA";
  596.     item_para[0] = '\0';
  597.     item_att  = 2;
  598.  
  599.     syl_putf("EDIA INSTALL START");
  600.     FS_chdrv( toupper(DirStart[0]) - 'A' );
  601.     if ( *srcdir == '\0' || *srcdir == '.' )
  602.     {
  603.         strcpy(tmp,DirStart);
  604.         ret = strlen(tmp);
  605.         if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  606.             tmp[ret-1] = '\0';
  607.     } else
  608.     {
  609.         if ( FS_isDelim(*srcdir) )
  610.             strcpy(tmp,srcdir);
  611.         else
  612.             sprintf(tmp,"%s%s",DirStart, srcdir);
  613.     }
  614.     FS_getFullPn(tmp2,tmp);
  615.     srcdir = tmp2;
  616.     att = _tarosc_fcopy_att;
  617.     ret = FCOPY_exec(att, srcdir, instfile, instdir);
  618.  
  619.     /* 環境設定    */
  620.     syl_putf("EDIA CUSTOMIZE");
  621.     _edia_setup(instdir,item_setup);
  622.  
  623.     if ( ret == NORMAL && item_setup != 0 )
  624.     {    /* アイテム登録    */
  625.         syl_putf("EDIA ITEM SETUP");
  626.         if ( isalpha(_edia_swapDrv) )
  627.             sprintf(item_para,"-swapDrv %c", _edia_swapDrv);
  628.         drv = toupper(instdir[0]) - 'A';
  629.         strcpy(tmp,instdir);
  630.         add_path_fn(tmp,item_prog);
  631.         item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
  632.     }
  633.  
  634.     return (ret);
  635. }
  636.  
  637. int        _edia_setup(char *instdir,int item_setup)
  638. {
  639.     return _hewin_edia_setup("edia.mac", instdir, item_setup);
  640. }
  641.  
  642. int        _hewin_edia_setup(char *fn_mac, char *instdir,int item_setup)
  643. {
  644.     char    *p, *s, *dir, *pathInst, fnMac[256], path[1024];
  645.     char    *MACROKEY_EXPSEARCH_PATH;
  646.     char    *amac;
  647.  
  648.     pathInst = instdir;
  649.     MACROKEY_EXPSEARCH_PATH = "Exp_search_path";
  650.  
  651.     strcpy(fnMac,pathInst);
  652.     add_path_fn(fnMac,fn_mac);
  653.  
  654.     if ( (amac = AMAC_allocWork(0)) == NULL )
  655.         return (ERR);
  656.     AMAC_load( amac, fnMac );
  657.  
  658.     if ( (p = AMAC_getName( amac, MACROKEY_EXPSEARCH_PATH)) == NULL || *p == '\0' )
  659.     {
  660.         path[0] = '\0';
  661.         p = path;
  662.  
  663.         dir = _tarosc_instdir[_NO_GSPLAY];
  664.         if ( *dir )
  665.         {
  666.             if ( p != path )    {    *p = ';';    ++p;    }
  667.             strcpy(p, dir);
  668.             p += strlen(dir);
  669.         }
  670.         dir = _tarosc_instdir[_NO_HE386];
  671.         if ( *dir )
  672.         {
  673.             if ( p != path )    {    *p = ';';    ++p;    }
  674.             strcpy(p, dir);
  675.             p += strlen(dir);
  676.         }
  677.         dir = _tarosc_instdir[_NO_CCI];
  678.         if ( *dir )
  679.         {
  680.             if ( p != path )    {    *p = ';';    ++p;    }
  681.             strcpy(p, dir);
  682.             p += strlen(dir);
  683.         }
  684.         dir = _tarosc_instdir[_NO_TOSTOOL];
  685.         if ( *dir )
  686.         {
  687.             if ( p != path )    {    *p = ';';    ++p;    }
  688.             strcpy(p, dir);
  689.             p += strlen(dir);
  690.         }
  691.         if ( p != path )
  692.             AMAC_setKey( amac, MACROKEY_EXPSEARCH_PATH, path );
  693.     } else
  694.     {    /* 既にパス設定が存在する    */
  695.         strcpy(path,p);
  696.  
  697.         dir = _tarosc_instdir[_NO_GSPLAY];
  698.         if ( _chk_pathlist(path,dir) == 0 )
  699.         {
  700.             strcat(path,";");
  701.             strcat(path,dir);
  702.         }
  703.         dir = _tarosc_instdir[_NO_HE386];
  704.         if ( _chk_pathlist(path,dir) == 0 )
  705.         {
  706.             strcat(path,";");
  707.             strcat(path,dir);
  708.         }
  709.         dir = _tarosc_instdir[_NO_CCI];
  710.         if ( _chk_pathlist(path,dir) == 0 )
  711.         {
  712.             strcat(path,";");
  713.             strcat(path,dir);
  714.         }
  715.         dir = _tarosc_instdir[_NO_TOSTOOL];
  716.         if ( _chk_pathlist(path,dir) == 0 )
  717.         {
  718.             strcat(path,";");
  719.             strcat(path,dir);
  720.         }
  721.         AMAC_setKey( amac, MACROKEY_EXPSEARCH_PATH, path );
  722.     }
  723.     AMAC_save( amac, fnMac, fn_mac);
  724.     AMAC_freeWork(amac);
  725.  
  726.     return (NORMAL);
  727. }
  728.  
  729. int        _chk_pathlist( char *pathlist, char *path )
  730. {
  731.     char    s1[1024], s2[256];
  732.  
  733.     strcpy(s1,pathlist);    FS_strupr(s1);
  734.     strcpy(s2,path);        FS_strupr(s2);
  735.     if ( strstr(s1,s2) == NULL )
  736.         return (0);    /* なし */
  737.     else
  738.         return (1);
  739. }
  740.  
  741. /*************************************************************************
  742. *    GSPLAY
  743. *************************************************************************/
  744.  
  745. int        _gsplay_config(char *instdir, int item_setup)
  746. {
  747.     int            ret;
  748.     char       *mnu_midi, *mnu_internal, *mnu_rsmidi, *mnu;
  749.     char        tmp[128], *msg;
  750.  
  751.     _gsplay_midi     =  0;    /* port A */
  752.     _gsplay_rsmidi   = -1;
  753.     _gsplay_internal = -1;
  754.  
  755.     if ( item_setup )
  756.     {
  757.         mnu_midi     = MNU_open();
  758.         mnu_rsmidi   = MNU_open();
  759.         mnu_internal = MNU_open();
  760.  
  761.         MNU_datAdd( mnu_midi   , 0, 'A', Rom16x16, 0x01, "", NULL, "port A (card-1)");
  762.         MNU_datAdd( mnu_midi   , 0, 'B', Rom16x16, 0x02, "", NULL, "port B (card-1)");
  763.         MNU_datAdd( mnu_midi   , 0, 'C', Rom16x16, 0x03, "", NULL, "port C (card-2)");
  764.         MNU_datAdd( mnu_midi   , 0, 'D', Rom16x16, 0x04, "", NULL, "port D (card-2)");
  765.         MNU_datAdd( mnu_midi   , 0, 'E', Rom16x16, 0x05, "", NULL, "port E (card-3)");
  766.         MNU_datAdd( mnu_midi   , 0, 'F', Rom16x16, 0x06, "", NULL, "port F (card-3)");
  767.         MNU_datAdd( mnu_midi   , 0, 'G', Rom16x16, 0x07, "", NULL, "port G (card-4)");
  768.         MNU_datAdd( mnu_midi   , 0, 'H', Rom16x16, 0x08, "", NULL, "port H (card-4)");
  769.         MNU_datAdd( mnu_midi   , 0,  0 , NULL    ,    0, "", 0, NULL );
  770.         MNU_datAdd( mnu_midi   , 0, 'O', Rom16x16, 0x00, "", NULL, "MIDI device not use");
  771.         MNU_setPosition(mnu_midi,-1);
  772.  
  773.         MNU_datAdd( mnu_rsmidi  , 0, '1', Rom16x16, 0x21, "", NULL, "ON  使う");
  774.         MNU_datAdd( mnu_rsmidi  , 0, '0', Rom16x16, 0x20, "", NULL, "OFF 使わない");
  775.         MNU_setPosition(mnu_rsmidi,-1);
  776.  
  777.         MNU_datAdd( mnu_internal, 0, '1', Rom16x16, 0x31, "", NULL, "ON  使う");
  778.         MNU_datAdd( mnu_internal, 0, '0', Rom16x16, 0x30, "", NULL, "OFF 使わない");
  779.         MNU_setPosition(mnu_internal,-1);
  780.  
  781.         do
  782.         {
  783.             if ( (mnu = MNU_open()) == NULL )
  784.                 break;
  785.             MNU_setTitle( mnu, Fnt16x16, "GSPLAY 演奏データ出力デバイス" );
  786.             if ( _gsplay_midi < 0 )
  787.             {
  788.                 msg = "not use";
  789.             } else
  790.             {
  791.                 msg = tmp;
  792.                 sprintf(msg,"port %c",_gsplay_midi + 'A' );
  793.             }
  794.             MNU_mnuAdd( mnu, 0, 'M', Fnt16x16, mnu_midi    , "MIDI         [%s]", msg);
  795.  
  796.             msg = (_gsplay_rsmidi < 0) ? "not use" : "ON";
  797.             MNU_mnuAdd( mnu, 0, 'I', Fnt16x16, mnu_rsmidi  , "RS-232C MIDI [%s]", msg);
  798.  
  799.             msg = (_gsplay_internal < 0) ? "not use" : "ON";
  800.             MNU_mnuAdd( mnu, 0, 'I', Fnt16x16, mnu_internal, "内蔵音源     [%s]", msg);
  801.  
  802.             MNU_datAdd( mnu, 0,  0 , NULL    ,    0, "", 0, NULL );
  803.             MNU_datAdd( mnu, 0, 'S', Rom16x16, 0xFF, "", 0, " <<< 設定終了 >>>");
  804.  
  805.             MNU_setPosition(mnu,DLGPOS_CENTER_OF_SCREEN);
  806.             ret = MNU_start(mnu);
  807.             if ( ret >= 0x01 && ret <= 0x08 )
  808.             {
  809.                 _gsplay_midi = ret - 0x01;
  810.             } else
  811.             {
  812.                 switch ( ret )
  813.                 {
  814.                     case 0x00:    _gsplay_midi     = -1;    break;
  815.                     case 0x20:    _gsplay_rsmidi   = -1;    break;
  816.                     case 0x21:    _gsplay_rsmidi   =  0;    break;
  817.                     case 0x30:    _gsplay_internal = -1;    break;
  818.                     case 0x31:    _gsplay_internal =  0;    break;
  819.                 }
  820.             }
  821.             MNU_close(mnu);
  822.             MNU_datClear(mnu);
  823.         } while ( ret != 0xFF );
  824.         MNU_datClear(mnu_midi    );
  825.         MNU_datClear(mnu_rsmidi  );
  826.         MNU_datClear(mnu_internal);
  827.     }
  828.     return (NORMAL);
  829. }
  830.  
  831. int        _gsplay_install(char *instdir,int item_setup)
  832. {
  833.     int            ret, att, len, drv;
  834.     char       *srcdir, *instfile;
  835.     char       *item_prog, *item_ttl, item_para[128];
  836.     int            item_att;
  837.     char        tmp[256], tmp2[256], ttl[80];
  838.  
  839.     srcdir    = "/TAROPYON/GSPLAY";
  840.     instfile  = "*.exp *.dat *.gsd *.doc *.mex *.mid *.mtk *.kok *.tif";
  841.     item_prog = "GSPLAY.EXP";
  842.     item_ttl  = "GSPLAY/pure";
  843.     item_para[0] = '\0';
  844.     item_att  = 2;
  845.  
  846.     syl_putf("GSPLAY INSTALL START");
  847.     FS_chdrv( toupper(DirStart[0]) - 'A' );
  848.     if ( *srcdir == '\0' || *srcdir == '.' )
  849.     {
  850.         strcpy(tmp,DirStart);
  851.         ret = strlen(tmp);
  852.         if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  853.             tmp[ret-1] = '\0';
  854.     } else
  855.     {
  856.         if ( FS_isDelim(*srcdir) )
  857.             strcpy(tmp,srcdir);
  858.         else
  859.             sprintf(tmp,"%s%s",DirStart, srcdir);
  860.     }
  861.     FS_getFullPn(tmp2,tmp);
  862.     srcdir = tmp2;
  863.     att = _tarosc_fcopy_att;
  864.     ret = FCOPY_exec(att, srcdir, instfile, instdir);
  865.  
  866.     /* 環境設定    */
  867.     syl_putf("GSPLAY CUSTOMIZE");
  868.     _gsplay_setup(instdir,item_setup);
  869.  
  870.     if ( ret == NORMAL && item_setup != 0 )
  871.     {    /* アイテム登録    */
  872.         syl_putf("GSPLAY ITEM SETUP");
  873.  
  874.         strcpy(tmp,instdir);
  875.         add_path_fn(tmp,item_prog);
  876.  
  877.         if ( _gsplay_midi >= 0 )
  878.         {
  879.             item_ttl = "GSPLAY/pure (MIDI)";
  880.             sprintf(item_para,"-gsPort %c", _gsplay_midi + 'A');
  881.             item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
  882.         }
  883.         if ( _gsplay_internal >= 0 )
  884.         {
  885.             item_ttl = "GSPLAY/pure (内蔵)";
  886.             strcpy(item_para,"-gsPort A -intPort A");
  887.             item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
  888.         }
  889.         if ( _gsplay_rsmidi >= 0 )
  890.         {
  891.             item_ttl = "GSPLAY/pure (RS)";
  892.             strcpy(item_para,"-rsmidi -gsPort R");
  893.             item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
  894.         }
  895.     }
  896.  
  897.     return (ret);
  898. }
  899.  
  900. int        _gsplay_setup(char *instdir,int item_setup)
  901. {
  902.     return (NORMAL);
  903. }
  904.  
  905. /*************************************************************************
  906. *    HE386
  907. *************************************************************************/
  908.  
  909. int        _he386_install(char *instdir,int item_setup)
  910. {
  911.     int            ret, att, len, drv;
  912.     char       *srcdir, *instfile;
  913.     char        tmp[256], tmp2[256];
  914.  
  915.     srcdir    = "/TAROPYON/HE386";
  916.     instfile  = "*.exp *.dll *.cci *.c *.h *.doc *.mml *.def";
  917.  
  918.     syl_putf("HE386 INSTALL START");
  919.     FS_chdrv( toupper(DirStart[0]) - 'A' );
  920.     if ( *srcdir == '\0' || *srcdir == '.' )
  921.     {
  922.         strcpy(tmp,DirStart);
  923.         ret = strlen(tmp);
  924.         if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  925.             tmp[ret-1] = '\0';
  926.     } else
  927.     {
  928.         if ( FS_isDelim(*srcdir) )
  929.             strcpy(tmp,srcdir);
  930.         else
  931.             sprintf(tmp,"%s%s",DirStart, srcdir);
  932.     }
  933.     FS_getFullPn(tmp2,tmp);
  934.     srcdir = tmp2;
  935.     att = _tarosc_fcopy_att;
  936.     ret = FCOPY_exec(att, srcdir, instfile, instdir);
  937.  
  938.     return (ret);
  939. }
  940.  
  941.  
  942. /*************************************************************************
  943. *    CCI
  944. *************************************************************************/
  945.  
  946. int        _cci_install(char *instdir,int item_setup)
  947. {
  948.     int            ret, att, len, drv;
  949.     char       *srcdir, *instfile;
  950.     char        tmp[256], tmp2[256];
  951.  
  952.     srcdir    = "/TAROPYON/CCI";
  953.     instfile  = "*.exp *.dll *.doc *.lst *.h *.c *.bat *.exe";
  954.  
  955.     syl_putf("CCI INSTALL START");
  956.     FS_chdrv( toupper(DirStart[0]) - 'A' );
  957.     if ( *srcdir == '\0' || *srcdir == '.' )
  958.     {
  959.         strcpy(tmp,DirStart);
  960.         ret = strlen(tmp);
  961.         if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  962.             tmp[ret-1] = '\0';
  963.     } else
  964.     {
  965.         if ( FS_isDelim(*srcdir) )
  966.             strcpy(tmp,srcdir);
  967.         else
  968.             sprintf(tmp,"%s%s",DirStart, srcdir);
  969.     }
  970.     FS_getFullPn(tmp2,tmp);
  971.     srcdir = tmp2;
  972.     att = _tarosc_fcopy_att;
  973.     ret = FCOPY_exec(att, srcdir, instfile, instdir);
  974.  
  975.     return (ret);
  976. }
  977.  
  978. /*************************************************************************
  979. *    DOS tool
  980. *************************************************************************/
  981.  
  982. int        _dostool_install(char *instdir,int item_setup)
  983. {
  984.     int            ret, att, len, drv;
  985.     char       *srcdir, *instfile;
  986.     char        tmp[256], tmp2[256];
  987.  
  988.     srcdir    = "/TAROPYON/DOSTOOL";
  989.     instfile  = "*.exe *.doc";
  990.  
  991.     syl_putf("DOS TOOL INSTALL START");
  992.     FS_chdrv( toupper(DirStart[0]) - 'A' );
  993.     if ( *srcdir == '\0' || *srcdir == '.' )
  994.     {
  995.         strcpy(tmp,DirStart);
  996.         ret = strlen(tmp);
  997.         if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  998.             tmp[ret-1] = '\0';
  999.     } else
  1000.     {
  1001.         if ( FS_isDelim(*srcdir) )
  1002.             strcpy(tmp,srcdir);
  1003.         else
  1004.             sprintf(tmp,"%s%s",DirStart, srcdir);
  1005.     }
  1006.     FS_getFullPn(tmp2,tmp);
  1007.     srcdir = tmp2;
  1008.     att = _tarosc_fcopy_att;
  1009.     ret = FCOPY_exec(att, srcdir, instfile, instdir);
  1010.  
  1011.     return (ret);
  1012. }
  1013.  
  1014. /*************************************************************************
  1015. *    TownsOS tool
  1016. *************************************************************************/
  1017.  
  1018. int        _tostool_install(char *instdir,int item_setup)
  1019. {
  1020.     int            ret, att, len, drv;
  1021.     char       *srcdir, *instfile;
  1022.     char        tmp[256], tmp2[256];
  1023.  
  1024.     srcdir    = "/TAROPYON/TOSTOOL";
  1025.     instfile  = "*.exp *.dll *.doc";
  1026.  
  1027.     syl_putf("TOS TOOL INSTALL START");
  1028.     FS_chdrv( toupper(DirStart[0]) - 'A' );
  1029.     if ( *srcdir == '\0' || *srcdir == '.' )
  1030.     {
  1031.         strcpy(tmp,DirStart);
  1032.         ret = strlen(tmp);
  1033.         if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  1034.             tmp[ret-1] = '\0';
  1035.     } else
  1036.     {
  1037.         if ( FS_isDelim(*srcdir) )
  1038.             strcpy(tmp,srcdir);
  1039.         else
  1040.             sprintf(tmp,"%s%s",DirStart, srcdir);
  1041.     }
  1042.     FS_getFullPn(tmp2,tmp);
  1043.     srcdir = tmp2;
  1044.     att = _tarosc_fcopy_att;
  1045.     ret = FCOPY_exec(att, srcdir, instfile, instdir);
  1046.  
  1047.     return (ret);
  1048. }
  1049.  
  1050. /*************************************************************************
  1051. *    SIDEWORK TOOL
  1052. *************************************************************************/
  1053.  
  1054. int        tarosdk_install()
  1055. {
  1056.     static char    *buf[4] =
  1057.     {
  1058.         "softname    \"サイドワークプログラム集\"",
  1059.         "instfile    /TAROPYON/SDKTOOL    \"*.exp *.doc\"",
  1060.         "help        SDKTOOL.GGG",
  1061.         NULL
  1062.     };
  1063.  
  1064.     install_exec(buf);
  1065.     return (0);
  1066. }
  1067.  
  1068. int        splib_install()
  1069. {
  1070.     static char    *buf[4] =
  1071.     {
  1072.         "softname    \"High C用ライブラリ (splib)\"",
  1073.         "instfile    /TAROPYON/SPLIB    \"*.*\"",
  1074.         "help        splib.ggg",
  1075.         NULL
  1076.     };
  1077.  
  1078.     install_exec(buf);
  1079.     return (0);
  1080. }
  1081.  
  1082. int        silib_install()
  1083. {
  1084.     static char    *buf[4] =
  1085.     {
  1086.         "softname    \"High C用ライブラリ (silib)\"",
  1087.         "instfile    /TAROPYON/SILIB    \"*.*\"",
  1088.         "help        silib.ggg",
  1089.         NULL
  1090.     };
  1091.  
  1092.     install_exec(buf);
  1093.     return (0);
  1094. }
  1095.  
  1096. int        dtalib_install()
  1097. {
  1098.     static char    *buf[4] =
  1099.     {
  1100.         "softname    \"DTA ライブラリ\"",
  1101.         "instfile    /TAROPYON/DTALIB    \"*.*\"",
  1102.         "help        dtalib.ggg",
  1103.         NULL
  1104.     };
  1105.  
  1106.     install_exec(buf);
  1107.     return (0);
  1108. }
  1109.  
  1110. #ifndef    _FC9
  1111. int        lhadll_install()
  1112. {
  1113.     static char    *buf[4] =
  1114.     {
  1115.         "softname    \"LHA ライブラリ (LHA.DLL)\"",
  1116.         "instfile    /TAROPYON/LHADLL    \"*.*\"",
  1117.         "help        lhadll.ggg",
  1118.         NULL
  1119.     };
  1120.  
  1121.     install_exec(buf);
  1122.     return (0);
  1123. }
  1124. #endif
  1125.